package com.imooc.service;

import com.imooc.BO.ShopCartBO;
import com.imooc.pojo.*;
import com.imooc.vo.*;

import java.util.List;

/**
 * @author gcq
 * @Create 2022-01-08
 */
public interface ItemsService {

    /**
     * 根据商品 Id 查询商品信息
     * @param itemId
     * @return
     */
    Items queryItemById(String itemId);

    /**
     * 根据商品 Id 查询商品图片
     * @param itemId
     * @return
     */
    List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品 Id 查询商品规格
     * @param itemId
     * @return
     */
    List<ItemsSpec> queryItemSpecList(String itemId);

    /**
     * 根据商品 Id 查询商品参数
     * @param itemId
     * @return
     */
    ItemsParam queryItemParam(String itemId);

    /**
     * 根据商品id查询评论
     * @param itemId
     */
    CommentLevelCountsVO queryCommentCounts(String itemId);

    /**
     * 根据商品Id查询商品评价
     * @param itemId
     * @param level
     * @return
     */
    List<ItemCommentVO> queryPagedComments(String itemId, Integer level);

    /**
     * 搜索商品列表
     * @param keywords
     * @param sort
     * @return
     */
    List<SearchItemVO> searchItems(String keywords, String sort);
    /**
     * 根据分类Id搜素商品列表
     * @param catId
     * @param sort
     * @return
     */
    List<SearchItemVO> searchItemsByThirdCatId(String catId, String sort);

    /**
     * 根据规格 specIds 查询最新的购物车中商品数据 用于刷新购物车中的商品数据
     * @param specIds
     * @return
     */
    List<ShopCartBO> searchItemsBySpecIds(String specIds);

    /**
     * 根据specId查询 商品规格
     * @param specId
     * @return
     */
    ItemsSpec queryItemsSpecById(String specId);

    /**
     * 根据 itemId 查询 商品主图片
     * @param itemId
     * @return
     */
    String queryItemMainImgById(String itemId);

    /**
     * 减少商品规格库存
     */
    void decreaseItemSpecStock(String specId, int buyCounts);
}
